#pragma once

#include "IGameState.h"
#include "..\Messaging\DHD_MessageSystem.h"
#include "..\Messaging\DHD_EventSystem.h"
#include "../Messaging/IListener.h"

class CComboSystem;
class CPlayer;
#include <vector>
using namespace std;
class CGamePlayState : public IGameState, public IListener 
{
private:
	int _nBKGGImage;
	int _nBKGSound;

//	vector<CEnemy*> Enemies;
	DHD_MessageSystem* _pMS;
	DHD_EventSystem* _pES;
	//CComboSystem* ComboList;
	
	vector<int> buttonStack;
	CPlayer* m_pPlayer;
	CGamePlayState();
	CGamePlayState(const CGamePlayState&);
	CGamePlayState& operator=(const CGamePlayState&);
	~CGamePlayState() {}

public:

	void Enter(void); // Enters the Game State
	bool Input(void); // Input
	void Update(float _fDT); // Update
	void Render(void); // Draw
	void Exit(void); // Leaves the Game State

	static void MessageProc(CBaseMessage* pMSG);
	void HandleEvent(CEvent* pEvent);

	CPlayer* GetPlayer() { return m_pPlayer; }
	vector<int>& GetButtonStack() { return buttonStack; }
	int GetSingleButtonStack(int x) { return buttonStack[x]; }


	static CGamePlayState* GetInstance()
	{
		static CGamePlayState instance;
		return &instance;
	}


};